<?php

defined('_AppMiage') or die('Restricted access');

if (isset($_GET['oid']) && !empty($_GET['oid']) && isset($_GET['pid']) && !empty($_GET['pid']))
{
    // L'offre...
    $offre = new Offre($_GET['oid']);

    // ... et ses criteres
    $critereOffre = Critere::getListByOffre($offre->getIdOffre());
    //vardump($critereOffre);
    /* echo '<pre>';
      var_dump($critereOffre);
      echo '</pre>';
     */
    // Les enseignants
    $enseignants = Enseignant::getListTuteurs();
    //vardump($enseignants);
    /*
     * Les enseignants ranges selon leurs points communs de la forme:
     *
     * array(){
     *      [6] => array(){
     *                  [168] => object...
     *                  [134] => object...
     *      }
     *      [2] => array(){
     *                  [1] => object...
     *      }
     * }
     *
     * Les enseignants 168 et 134 ont 6 criteres communs avec l'offre.
     * L'enseignant 1 a 2 criteres communs avec l'offre
     */
    $enseignantsPotentielles = array();

    // Le nombre de types de criteres
    $nbTypes = Critere::countTypes();

    // Pour chaque enseignants on regarde le nombre de criteres en communs qu'ils ont avec l'offre
    foreach ($enseignants as $e)
    {
        if (Enseignant::isFree($e->IdUtilisateur, intval($_GET['pid'])))
        {
            $critereE = Critere::getListByEnseignant($e->IdUtilisateur);
            //vardump($critereE);
            if (!empty($critereE))
            {
                $nbCriteresCommun = 0;
                for ($index = 1; $index <= $nbTypes; $index++)
                {
                    if (!empty($critereE[$index]) && !empty($critereOffre[$index]))
                    {
                        $pointsCommuns = array_intersect($critereE[$index], $critereOffre[$index]);
                        //vardump($pointsCommuns);
                        $nbCriteresCommun = $nbCriteresCommun + count($pointsCommuns);
                    }
                }
                $enseignantsPotentielles[$nbCriteresCommun][$e->IdUtilisateur] = $e;
            }
            else
            {
                // -1 pour aucun criteres choisis
                $enseignantsPotentielles[-1][$e->IdUtilisateur] = $e;
            }
        }
    }

    // Tri inverse selon les keys
    krsort($enseignantsPotentielles);

    // ----------------------------------- JSON ----------------------------------------------

    echo "{";
    echo '"error":"0",';
    echo '"enseignants" : [';

    $nbEnseignantARecup = 5;
    $enseignantsRecup = 0;
    // Retour des 5 meilleurs enseignants
    $nbResult = 0;
    foreach($enseignantsPotentielles as $arrayE)
    {
        foreach($arrayE as $e)
        {
            $nbResult = $nbResult +1;
        }
    }

    //echo "nbResult=$nbResult";

    foreach ($enseignantsPotentielles as $nbCr => $arrayE)
    {
        if ($enseignantsRecup >= $nbEnseignantARecup)
        {
            break;
        }
        else
        {
            foreach ($arrayE as $e)
            {
                if ($enseignantsRecup >= $nbEnseignantARecup)
                {
                    break;
                }
                else
                {
                    echo '{';
                    echo '"id":"' . $e->IdUtilisateur . '",';
                    echo '"nom":"' . $e->NomUtilisateur . '",';
                    echo '"prenom":"' . $e->PrenomUtilisateur . '",';
                    echo '"nbCriteresCommuns":"' . $nbCr . '",';
                    $mess = "non";
                    if (!empty($e->MessageEnseignant))
                    {
                        $mess = "oui";
                    }
                    echo '"message":"' . $mess . '"';
                    
                    $enseignantsRecup = $enseignantsRecup + 1;

                    if (($enseignantsRecup >= $nbEnseignantARecup) || ($enseignantsRecup == $nbResult))
                    {
                        echo '}';
                    }
                    else
                    {
                        echo '},';
                    }
                }
            }
        }
    }

    echo ']}';
}
else
{
    echo "{error:1,msg:Veuillez s&eacute;lectionner une offre (oid) et une promo (pid).}";
}
?>
